<?php
namespace Amis\form;
class InputRating extends FormItem
{
    public string $type = 'input-rating';

    /**
     * 是否使用半星选择
     * @param bool $half
     * @return $this
     */
    public function half(bool $half = false)
    {
        $this->half = $half;
        return $this;
    }

    /**
     * 总星数
     * @param int $count
     * @return $this
     */
    public function count(int $count = 5)
    {
        $this->count = $count;
        return $this;
    }

    /**
     * 只读
     * @param bool $readOnly
     * @return $this
     */
    public function readOnly(bool $readOnly = false)
    {
        $this->readOnly = $readOnly;
        return $this;
    }

    /**
     * 是否允许再次点击后清除
     * @param bool $allowClear
     * @return $this
     */
    public function allowClear(bool $allowClear = true)
    {
        $this->allowClear = $allowClear;
        return $this;
    }

    /**
     * 星星被选中的颜色。 若传入字符串，则只有一种颜色。若传入对象，可自定义分段，键名为分段的界限值，键值为对应的类名
     * {'2': '#abadb1', '3': '#787b81', '5': '#ffa900' }
     * @param string|array $colors
     * @return $this
     */
    public function colors($colors = "{'2': '#abadb1', '3': '#787b81', '5': '#ffa900' }")
    {
        $this->colors = $colors;
        return $this;
    }

    /**
     * 未被选中的星星的颜色
     * @param string $inactiveColor
     * @return $this
     */
    public function inactiveColor(string $inactiveColor = "e7e7e8")
    {
        $this->inactiveColor = $inactiveColor;
        return $this;
    }

    /**
     * 星星被选中时的提示文字。可自定义分段，键名为分段的界限值，键值为对应的类名
     * @param array $texts
     * @return $this
     */
    public function texts(array $texts)
    {
        $this->texts = $texts;
        return $this;
    }

    /**
     * 文字的位置
     * @param bool $textPosition
     * @return $this
     */
    public function textPosition(bool $textPosition = true)
    {
        $this->textPosition = $textPosition ? 'right' : 'left';
        return $this;
    }

    /**
     * 自定义字符
     * @param string $char
     * @return $this
     */
    public function char(string $char = '★')
    {
        $this->char = $char;
        return $this;
    }

    /**
     * 自定义字符类名
     * @param string $charClassName
     * @return $this|\Amis\form\InputRating
     */
    public function charClassName(string $charClassName)
    {
        $this->charClassName = $charClassName;
        return $this;
    }

    /**
     * 自定义文字类名
     * @param string $textClassName
     * @return $this|\Amis\form\InputRating
     */
    public function textClassName(string $textClassName)
    {
        $this->textClassName = $textClassName;
        return $this;
    }
}